package cc.wsyw126.java.nowcoder.sword_offer;

/**
 * Created by Administrator on 2017/4/17.
 * 牛客最近来了一个新员工Fish，每天早晨总是会拿着一本英文杂志，写些句子在本子上。
 * 同事Cat对Fish写的内容颇感兴趣，有一天他向Fish借来翻看，但却读不懂它的意思。
 * 例如，“student. a am I”。
 * 后来才意识到，这家伙原来把句子单词的顺序翻转了，正确的句子应该是“I am a student.”。
 * Cat对一一的翻转这些单词顺序可不在行，你能帮助他么？
 */
public class ReverseSentence {
    public String ReverseSentence(String str) {
        if (str == null || str.length() == 0) return str;
        StringBuilder sb = new StringBuilder(str);
        reverse(sb, 0, sb.length() -1);
        int count =0;
        sb.append(' ');
        for (int i = 0; i < sb.length(); i++) {
            if (sb.charAt(i) != ' ') {
                count++;
            } else {
                reverse(sb, i - count, i-1);
                count=0;
            }
        }
        sb.delete(sb.length() -1, sb.length());
        return sb.toString();
    }
    private void reverse(StringBuilder sb, int start, int end) {
        while (start<end) {
            char c = sb.charAt(start);
            sb.replace(start, start+1, ""+sb.charAt(end));
            sb.replace(end, end+1, String.valueOf(c));
            start++;
            end--;
        }
    }

    public static void main(String[] args) {
        ReverseSentence reverseSentence = new ReverseSentence();
        String s = reverseSentence.ReverseSentence("student. a am I");
        System.out.println("s = " + s);
    }
}
